#pragma once
#include<opencv2/opencv.hpp>
#include<map>
#include<vector>
//#include "opencl_accelerate.h"

class curveMatch
{
public:
	curveMatch();
	curveMatch(cv::Mat src, cv::Mat curve);
	~curveMatch();

	void match();
	void seal();
	void setSrcMat(cv::Mat src);
	cv::Mat template_curve;
	cv::Mat outsideCurve;
	cv::Mat outsideCurveMask;
	cv::Mat srcMat;
	cv::Mat srcGrayMat;
	cv::Mat srcOutCurve;
	cv::Mat srcOutCurveMask;
	float minScale;
	float maxScale;
	float scale_step = 0.05;
	float minRotate;
	float maxRotate;
	float rotate_step = 1;
	std::map<std::pair<float, float>, cv::Mat>prymid;
	const float degreeRangeLength = 180.0;
	std::vector<cv::Mat>searchROIs;
	std::vector <cv::Point> ROIStartPoints;
	std::vector<cv::Mat>srcCrop;
	std::vector<float>leanDegree;
	std::vector<std::tuple<cv::Point, float, float, float>>matchInfo; //Point, Scale, rotate_degree, score
	//Accelerate accelarate;
private:

};